package hojatrabajo1;

//*******************************************************************
// Autor:   Yimy Juarez 
//          Eddy Castro
//          Rodrigo Medrano
// Seccion: 10
// Nombre del Archivo: Radio.java
// Fecha de Modificacion:09/07/2012
// Descripcion:
// Modelado de la clase carro en la que se implementara la interfaz
// iRadio
// ******************************************************************


public abstract class Radio  implements iRadio
{
    private boolean estadoRadio = false, signal = true;
    private double actualFreq_FM = 87.9, actualFreq_AM = 530, actualFreq;
    protected float chanelAM[] = new float[12];
    protected float chanelFM[] = new float[12];
	
//-----------------------------------------------------------------
//  Constructor: Inicializacion de clase Radio           
//-----------------------------------------------------------------
    public Radio()
	{
		
	}

    /* 
    * Enciende o apaga el Radio.
    * @return True si el radio se encendió, o false si el
    * radio se apagó.
    */
    public boolean Power()
    {
        if (estadoRadio)
       {
            estadoRadio=false;
            return estadoRadio;
        } 
        else
        {
            estadoRadio=true;
            return estadoRadio;
        } 
    }
   

    /* 
    * Cambia la banda de AM a FM o viceversa.
    * @return True si la banda es AM y false si la banda
    * es FM.
    */
    public boolean changeSignal()
    {
        if (signal)
        {	
            signal=false;  //Cambiar a FM
            return signal;
        }
        else
        {
            signal=true;   //Cambiar a AM
            return signal;
        }
    } 


    /* 
    * Adelanta la frecuencia a la siguiente posible.
    * @return La frecuencia a la que se pasa.
    */
    public float NextFreq()
    {
        if(signal)
        {
            actualFreq_AM+=10;
            if(actualFreq_AM==1610)
            actualFreq_AM=530;
            actualFreq=actualFreq_AM;
            return actualFreq;
        }
        else
        {
            actualFreq_FM+=0.2;
            if(actualFreq_FM==107.9)
            actualFreq_FM=87.9;
            actualFreq=actualFreq_FM;
            return actualFreq;
        }
    }    

    /*
    * Cambia la estación a la grabada en el botón dado. Devuelve la estación
    * actual que se escucha. Existen únicamente 12 posiciones de memoria por
    * cada Banda, y se encuentran en el rango [1,12].
    * @return La frecuencia (nueva) a la que está sintonizada la radio.
    */
    public  float ChangeTune( int Boton )
    {
        if(signal)
	{
            actualFreq_AM=chanelAM[Boton-1];
            actualFreq=actualFreq_AM;
            return actualFreq;
	}	
	else
	{
            actualFreq_FM=chanelFM[Boton-1];
            actualFreq=actualFreq_FM;
            return actualFreq;
	}
    } 
    
    /*
    * Graba la frecuencia actual en el botón dado. Existen únicamente
    * 12 posiciones de memoria (botones) por cada Banda, y se encuentran
    * en el rango [1,12].
    * @return True si la operación fue exitosa, false en caso contrario.
    */
    public  boolean SaveFreq( int Boton );
    {
        if(signal)
	{
            if ((Boton >=1)&&(Boton <=12))
            {	
                chanelAM[Boton-1]=actualFreq_AM;
                return true;
            }
            else
            {
                return false;
                else
                {
                    if ((Boton >=1)&&(Boton <=12))
                    {	
                        chanelFM[Boton-1]=actualFreq_FM;
                    }
                return true;
                }
                else
		return false;
            }
        }
			
    } 
	
    /*
    * @return True si la radio está encendida, false en caso contrario.
    */
    public boolean IsOn()
    {
        return estadoRadio;
    }
	
    /*
    * @return True si la banda es AM, y false si es FM.
    */
    public boolean IsAm()
    {
	return signal;
    }

    /*
    * @return La frecuencia actual a la que está sintonizada la radio.
    */
    public  float GetFreq()
    {
	return actualFreq;
    }
}	 